
package com.pis.persistence;

import com.pis.model.Pessoa;
import com.pis.util.DataBaseConnection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Philippe Moneda at philippemoneda@gmail.com
 */
public class PessoaDAO implements IPessoaDAO{

    public boolean add(Pessoa t) {
        String sql = "insert into Pessoa values('"+t.getCpf()+"','"+t.getNome()+"','"+t.getData_nascimento()+"','"+t.getTelefone()+"')";
        try {
            if(DataBaseConnection.UpdateDB(sql)>0)
                return true;
        } catch (Exception ex) {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public boolean edit(Pessoa _new, Pessoa _old) {
        String sql = "update Pessoa set cpf='"+_new.getCpf()+"', nome='"+_new.getNome()+"', dataNascimento='"+_new.getData_nascimento()
                +"',telefone='"+_new.getTelefone()+"' where cpf='"+_old.getCpf()+"'";
        try {
            System.out.println(sql);
            if(DataBaseConnection.UpdateDB(sql)>0) return true;
        } catch (Exception ex) {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public boolean del(Pessoa t) {
        String sql ="delete from Pessoa where cpf='"+t.getCpf()+"'";
        try {
            if(DataBaseConnection.UpdateDB(sql)>0)return true;
        } catch (Exception ex) {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public List<Pessoa> findAll() {
        String sql = "select * from Pessoa";
        ResultSet rs;
        try {
            rs = DataBaseConnection.getQuery(sql);
        ArrayList<Pessoa> lista  = new ArrayList<Pessoa>();
        while(rs.next()){
            Pessoa p = new Pessoa();
            p.setCpf(rs.getString("cpf"));
            p.setData_nascimento(rs.getDate("dataNascimento").toString());
            p.setNome(rs.getString("nome"));
            p.setTelefone(rs.getString("telefone"));
            lista.add(p);
        }
        return lista;
        } catch (Exception ex) {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    public Pessoa getByID(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public Pessoa getByCpf(String cpf){
        try {
            String sql = "select * from Pessoa where cpf='"+cpf+"'";
            Pessoa p = null;
            ResultSet rs = DataBaseConnection.getQuery(sql);
            if(rs.next()){
                p = new Pessoa();
                p.setCpf(rs.getString("cpf"));
                p.setData_nascimento(rs.getString("dataNascimento"));
                p.setNome(rs.getString("nome"));
                p.setTelefone(rs.getString("telefone"));
                
            }
            return p;
        } catch (Exception ex) {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
}
